package org.example.algorithm.array;

import java.util.HashMap;
import java.util.Map;

public class SubarraySumSolution {

    public int subarraySum(int[] nums, int k) {
        if (nums.length == 0) {
            return 0;
        }
        Map<Integer, Integer> prefixSumMap = new HashMap<>();
        prefixSumMap.put(0, 1);
        int sum = 0;
        int count = 0;
        for (int i=0;i<nums.length;i++) {
            sum += nums[i];
            count += prefixSumMap.getOrDefault(sum - k, 0);
            prefixSumMap.put(sum, prefixSumMap.getOrDefault(sum, 0) + 1);
        }
        return count;
    }

    //暴力解法
    public int subarraySum2(int[] nums, int k) {
        if (nums.length == 0) {
            return 0;
        }
        int count =  0;
        for (int i=0;i<nums.length;i++) {
            int sum = 0;
            for (int j=i;j>=0;j--) {
                sum += nums[j];
                if (sum == k) {
                    count++;
                }

            }
        }
        return count;
    }

    public static void main(String[] args) {

    }
}
